Chapter7 - IPv6协议

7.1 概述

  • 随着Internet的快速发展,现在IPv4已很不适用

    • IP地址空间耗尽问题
    • 安全性问题
    • 服务质量问题
  • 解决IP地址耗尽问题的措施:

    • 采用无类别编址CIDR,使IP地址的分配更加合理
    • 采用网络地址转换NAT方法以节省全球 IP地址
    • 采用具有更大地址空间的新版本的IP协议 IPv6
  • IPv6仍支持无连接的传送,但将协议数据单元PDU称为分组,而不是IPv4的数据报

  • IPv6所引进的主要变化如下:

    1. 更大的地址空间。IPv6把地址从IPv4的32位增大到4倍,即增大到128位,使地址空间增大了 $2^{96}$ 倍。这样大的地址空间在可预见的将来是不会用完的。
    2. 扩展的地址层次结构。IPv6由于地址空间很大,因此可以划分为更多的层次。
    3. 灵活的首部格式。IPv6数据报的首部和IPv4的并不兼容。IPv6定义了许多可选的扩展首部,不仅可提供比IPv4更多的功能,而且还可提高路由器的处理效率,这是因为路由器对扩展首部不进行处理(除逐跳扩展首部外)。
    4. 改进的选项。IPv6允许数据报包含有选项的控制信息,因而可以包含一些新的选项。但IPv6的首部长度是固定的,其选项放在有效载荷中。我们知道,IPv4所规定的选项是固定不变的,其选项放在首部的可变部分。
    5. 允许协议继续扩充。这一点很重要,因为技术总是在不断地发展(如网络硬件的更新)而新的应用也还会出现。但我们知道,IPv4的功能是固定不变的。
    6. 支持即插即用(即自动配置)。因此IPv6不需要使用DHCP。
    7. 支持资源的预分配。IPv6支持实时视像等要求保证一定的带宽和时延的应用。
    8. IPv6首部改为8字节对齐(即首部长度必须是8字节的整数倍)。原来的IPv4首部是4字节对齐。

7.2 IPv6地址

  • 一般来讲,一个IPv6数据报的目的地址可以是以下三种基本类型地址之一:

    1. **单播(unicast)**。
      • 单播就是传统的点对点通信
    2. **多播(multicast)**。
      • 多播是一点对多点的通信,数据报发送到一组计算机中的每一个。
      • IPv6没有采用广播的术语,而是将广播看作多播的一个特例。
    3. 任播(anycast)
      • 这是IPv6增加的一种类型。
      • 任播的终点是一组计算机,但数据报只交付其中的一个,通常是距离最近的一个。
  • 在IPv6中,每个地址占128位,地址空间大于 $3.4 \times 10^{38}$。

如果整个地球表面(包括陆地和水面)都覆盖着计算机,那么IPv6允许每平方米拥有7X1023个IP地址。如果地址分配速率是每微秒分配100万个地址,则需要1019年的时间才能将所有可能的地址分配完毕。可见在想象到的将来,IPv6的地址空间是不可能用完的。

  • IPv6地址采用冒号十六进制记法(colon hexadecimal notation)
    • 每个 16 位的值用十六进制值表示,各值之间用冒号分隔
      • 例:68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
    • 零压缩(zero compression),即一连串连续的零可以为一对冒号所取代(一个地址只能用一次)
      • 例:FF05:0:0:0:0:0:0:B3 可以写成:FF05::B3
    • 冒号十六进制记法可结合点分十进制的后缀
      • 例:0:0:0:0:0:0:128.10.2.1 再使用零压缩即可得: ::128.10.2.1
    • CIDR的斜线表示法仍然可用
      • 例:60位前缀的12AB00000000CD3可记为:
      • 12AB:0000:0000:CD30:0000:0000:0000:0000/60
      • 或12AB::CD30:0:0:0:0/60
      • 或12AB:0:0:CD30::/60

7.3 IPv6首部

一、IPv6数据报结构

  • IPv6数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。
    • 首部长度固定40字节,称为基本首部(base header)
    • 有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分
      • 但请注意,所有的扩展首部并不属于IPv6数据报的首部。
  • 与IPv4相比,IPv6对首部中的某些字段进行了如下的更改:
    • 取消了不必要的功能,首部字段数减少到 8个
    • 取消了首部的校验和字段加快了路由器处理数据报的速度
    • 取消了选项字段,而用扩展首部来实现选项功能。

二、基本首部

(1) 版本(version) 占4位。它指明了协议的版本,对IPv6该字段是6。

(2) 通信量类(流量类别)(traffic class) 占8位。这是为了区分不同的IPv6数据报的类别或优先级

(3) 流标号(flow label) 占20位。

  • IPv6的一个新的机制是支持资源预分配,并且允许路由器把每一个数据报与一个给定的资源分配相联系。
  • IPv6提出流(flow)的抽象概念。所谓“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量
  • 所有属于同一个流的数据报都具有同样的流标号。因此,流标号对实时音频/视频数据的传送特别有用。对于传统的电子邮件或非实时数据,流标号则没有用处,把它置为0即可。

(4) 有效载荷长度(payload length)占16位。它指明IPv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值是64 KB (65535字节)。

(5) 下一个首部(next header) 占8位。它相当于IPv4的协议字段或可选字段。

  • 当IPv6数据报没有扩展首部时,下一个首部字段的作用和IPv4的协议字段一样,它的值指出了基本首部后面的数据应交付IP层上面的哪一个高层协议(例如:6或17分别表示应交付运输层TCP或UDP).
  • 当出现扩展首部时,下一个首部字段的值就标识后面第一个扩展首部的类型
  • 具体见下扩展首部

(6) 跳数限制(hop limit) 占8位。用来防止数据报在网络中无限期地存在。

  • 源点在每个数据报发出时即设定某个跳数限制(最大为255跳)。
  • 每个路由器在转发数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为零时,就要把这个数据报丢弃

(7) 源地址,占128位。是数据报的发送端的IP地址。

(8) 目的地址,占128位。是数据报的接收端的IP地址。

三、扩展首部

  • 简介
    • 原IPv4首部中的选项功能都放在IPv6扩展首部中
    • 数据报途中经过的路由器不处理扩展首部(除逐跳选项扩展首 部以外),扩展首部由源和目的站的主机处理,路由器的处理效率大大提高
  • 在RFC 2460中定义了六种扩展首部:
    1. 逐跳选项
    2. 路由选择
    3. 分片
    4. 鉴别(IPSec)
    5. 封装安全有效载荷(IPSec)
    6. 目的站选项

7.4 IPv4向IPv6过渡

  • 向IPv6过渡只能采用逐步演进的办法,还必须使新安装的IPv6系统能够向后兼容
  • IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由
  • 目前实现IPv4/IPv6互操作的技术主要有两种:
    1. 双协议栈(dual stack)
      • 主机(或路由器)装有两个协议栈,一个IPv4和一个IPv6,根据需要使用不同的协议栈进行通信
    2. 隧道技术(tunneling)
      • 将IPv6数据报重新封装后通过IPv4网络传输,即IPv6数据报作为IPv4数据报的数据部分